package com.generic.type;

import java.util.List;
import java.util.Map;

/**
 * 基础接口设计
 * @param <R> 返参类型
 * @param <V> 入参类型
 */
interface CallBack<R,V> {
    /**
     * 回调方法：V 方法入参 ，R 方法返回值
     */
    R callBack (V v) ;
}
/**
 * 扩展接口设计01
 */
interface ExtCallBack01<R extends Integer,V extends List<String>>
                        extends CallBack<Integer,List<String>> {
    @Override
    Integer callBack (List<String> list) ;
}
/**
 * 扩展接口设计01
 */
interface ExtCallBack02<R extends Boolean,V extends Map<String,Long>>
        extends CallBack<Boolean,Map<String,Long>> {
    @Override
    Boolean callBack (Map<String,Long> map) ;
}

public class Generic02 {
    public static void main(String[] args) {
        new ExtCallBack01<Integer,List<String>>(){
            @Override
            public Integer callBack(List<String> list) {
                list.add("hello");
                return list.size();
            }
        };
        new ExtCallBack02<Boolean,Map<String,Long>> (){
            @Override
            public Boolean callBack(Map<String, Long> map) {
                map.put("Fire",119L) ;
                return map.size()>0 ;
            }
        } ;
    }
}